package com.IntelligentCommunity.community.service;

import com.IntelligentCommunity.community.domain.Emigration;
import com.IntelligentCommunity.community.domain.PopulationType;
import com.IntelligentCommunity.community.domain.RealLabel;
import com.IntelligentCommunity.community.domain.RealPopulation;
import com.IntelligentCommunity.community.domain.*;

import java.util.List;

/**
 * 实有人口统计Service接口
 *
 * @author zzpjx
 * @date 2024-07-19
 */
public interface IRealPopulationService
{
    /**
     * 查询实有人口统计
     *
     * @param id 实有人口统计主键
     * @return 实有人口统计
     */
    public RealPopulation selectRealPopulationById(Long id);

    /**
     * 查询实有人口统计列表
     *
     * @param realPopulation 实有人口统计
     * @return 实有人口统计集合
     */
    public List<RealPopulation> selectRealPopulationList(RealPopulation realPopulation);

    /**
     * 新增实有人口统计
     *
     * @param realPopulation 实有人口统计
     * @return 结果
     */
    public int insertRealPopulation(RealPopulation realPopulation);

    /**
     * 修改实有人口统计
     *
     * @param realPopulation 实有人口统计
     * @return 结果
     */
    public int updateRealPopulation(RealPopulation realPopulation);

    /**
     * 批量删除实有人口统计
     *
     * @param ids 需要删除的实有人口统计主键集合
     * @return 结果
     */
    public int deleteRealPopulationByIds(Long[] ids);

    /**
     * 删除实有人口统计信息
     *
     * @param id 实有人口统计主键
     * @return 结果
     */
    public int deleteRealPopulationById(Long id);

    void syncFace2Algorithm();

    /**
     * 功能：实有车辆户主下拉框查询
     * @return
     */
    List<RealPopulation> populationList();

    /**
     * 功能：批量插入实有人口统计
     * @param list
     */
    void insertRealPopulationList(List<RealPopulation> list);

    void updateTimeById(Long id);

    /**
     * 功能：查询人员类型下拉框查询
     * @return
     */
    List<PopulationType> populationType();

    /**
     * 功能：查询人员标签
     * @return
     */
    List<RealLabel> labelList();

    void handleEmigration(Emigration emigration);

    List<Emigration> selectEmigrationLog(Integer id);

    List<RealEstate> selectRidgepole(Integer id);

    List<RealEstate> selectElement(Integer id, Integer did);

    List<RealEstate> selectHouseholds(Integer element, Integer ridgepole, Integer did);

    /**
     * 功能：查询当前小区下的实有人口
     * @param districtId
     * @return
     */
    List<RealPopulation> selPopulation(Integer districtId);
}
